home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Penthouse: Select a Pet 2
/
Penthouse Select A Pet II.iso
/
mac
/
SETUP.MST
< prev
next >
Wrap
Text File
|
1995-05-10
|
29KB
|
796 lines
rem Required to interface with MSSETUP DLL's
rem -------------------------------------------------
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
rem Dialog box id's
rem ---------------
CONST NUKEOLD = 101 ''Warning for older version
CONST OLDMESS = 102 ''Modeless dialog for old versions
CONST DESTPATH = 300 ''Gets destination path
CONST EXITQUIT = 600 ''Exits on user request
CONST EXITSUCCESS = 700 ''Exits when install is done
CONST EXITDEINSTOK = 6601 ''Exits when uninstall is done
CONST ASKSETUPTYPE = 6603 ''Gets setup options
CONST TOOBIG = 6300 ''Not enough space on target disk error
CONST BADPATH = 6400 ''Bad destination path error
CONST BADWINDOWS = 6500 ''Wrong Windows release
CONST BADCOLORS = 6550 ''Not in 256 colors
CONST EXITFAILURE = 6600 ''Exits on error
CONST COPYINGFILES = 6602 ''Displays message "Copying Files..."
rem String id's
rem -----------
CONST STR_UTILITY = 1024 ''Utility
CONST STR_GROUP = 1025 ''Program Manager group
CONST STR_TITLE = 1026 ''Installer Title
CONST STR_MSG1 = 1027 ''Version error message part 1
CONST STR_MSG2 = 1028 ''Version error message part 2
CONST STR_WARNING = 1029 ''Warning
CONST STR_README = 1030 ''Read Me
CONST STR_PROGRAM = 1031 ''Program Manager program (for group)
rem Miscellaneous Constants
rem -----------------------
CONST NOLOGO = 1 ''Dummy NULL bitmap (must be 1)
CONST LOGO = 2 ''Background bitmap
CONST NOSPACE = 1 ''No space to complete install
CONST INSTALLOK = 2 ''Install completed OK
CONST INSTALLFAILED = 3 ''Install failed for some reason
CONST UNINSTALLOK = 4 ''Uninstall completed OK
CONST FILES_REMOVED = 1
CONST FILES_SKIPPED = 2
rem Global Variables
rem ----------------
GLOBAL MYSYSDIR$
GLOBAL MYWINDIR$
GLOBAL SOURCE$ ''Source directory
GLOBAL DEST$ ''Default destination directory
GLOBAL SETUPTYPE$ ''Setup type (Local, Client, Server)
GLOBAL LEANINST$ ''Setup type (Local, Client, Server)
GLOBAL PREFINST$ ''Setup type (Local, Client, Server)
GLOBAL FULLINST$ ''Setup type (Local, Client, Server)
GLOBAL QTWDIR$ ''QTW directory
GLOBAL CUIDLL$ ''User interface DLL
GLOBAL ENUDLL$
GLOBAL SETUPPATH$ ''Setup destination path
GLOBAL HELPPROC$ ''Help dialog procedure
GLOBAL EXTRACOSTS$ ''List of extra costs to add per drive
GLOBAL APPNEEDS$ ''Disk space costs per drive
GLOBAL SECTIONKEY$ ''INF file section key
GLOBAL SUCCESS% ''Installation completion code
rem Initialize global vriables
rem --------------------------
LEANINST$ = "1"
PREFINST$ = "2"
FULLINST$ = "3"
SETUPPATH$ = "C:\PETCD"
MYSYSDIR$ = GetWindowsSysDir
MYWINDIR$ = GetWindowsDir
SOURCE$ = GetSymbolValue("STF_SRCDIR")
REM FOR TESTING ONLY
REM SOURCE$ = "D:\"
DEST$ = SETUPPATH$
SUCCESS% = INSTALLFAILED
EXTRACOSTS$ = "ExtraCosts"
APPNEEDS$ = "AppNeeds"
SECTIONKEY$ = "SectionKey"
FOR i% = 1 TO 26 STEP 1
AddListItem EXTRACOSTS$, "16384"
NEXT i%
rem Get name of localized user interface dialogs
rem --------------------------------------------
CUIDLL$ = "setup.DLL"
ENUDLL$ = "SETUPENU.DLL"
rem Subroutines and Functions
rem -------------------------
DECLARE FUNCTION Install AS INTEGER
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE FUNCTION GetDLLVersion LIB "setup.dll" (szDLL$) AS INTEGER
DECLARE FUNCTION HideCriticalDirectory LIB "setup.dll" (szDir$) AS INTEGER
DECLARE FUNCTION Has256Colors LIB "setup.dll" (hinst%) AS INTEGER
DECLARE FUNCTION GetResourceString LIB "setup.dll" (szResource$, idString%) AS INTEGER
DECLARE FUNCTION StartCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
DECLARE FUNCTION StopCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
DECLARE FUNCTION MyDeleteGroup LIB "setup.dll" (hwnd%) AS INTEGER
DECLARE FUNCTION MyRemoveDir LIB "setup.dll" (szDir$) AS INTEGER
DECLARE FUNCTION BlastFilesToTarget LIB "setup.dll" (szSource$, szDest$, sMode%) AS INTEGER
DECLARE FUNCTION MyMessageBox LIB "setup.dll" (hinst%, hwnd%, sMode%, pszStatus as POINTER TO INTEGER) AS INTEGER
DECLARE FUNCTION CheckForOld AS INTEGER
DECLARE FUNCTION CheckForOldPETCD1 AS INTEGER
DECLARE FUNCTION CheckForOldPHI AS INTEGER
DECLARE FUNCTION RemoveOldQTFiles (FilePath$) AS INTEGER
DECLARE FUNCTION CheckForSpace (DrivePath$) AS INTEGER
rem Initialize custom setup logic
rem -----------------------------
i% = GetResourceString (CUIDLL$, STR_TITLE)
SetTitle GetSymbolValue ("ResourceString")
i% = StartCustomSetup (HinstFrame(), HwndFrame ())
i% = SetBeepingMode(1)
rem Make sure that we are running on Windows 3.1 or better
rem ------------------------------------------------------
IF GetWindowsMajorVersion() < 3 THEN
sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
UIPop 1
GOTO CLEANUP
END IF
IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
UIPop 1
GOTO CLEANUP
END IF
rem Make sure that we are running on a 386 or better
rem ------------------------------------------------
IF GetWinFlags() AND 2 THEN
sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
UIPop 1
GOTO CLEANUP
END IF
rem Find and read the .INF file
rem ---------------------------
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szTemp$ = GetSymbolValue("STF_SRCDIR")
szInf$ = szTemp$ + "PETCD.INF"
END IF
ReadInfFile szInf$
rem Estimate the cost of the install
rem --------------------------------
ListSym$ = APPNEEDS$
drive$ = MID$("C:\", 1, 1)
ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
AddSectionFilesToCopyList "PetCD", SOURCE$, "C:\"
AddSectionFilesToCopyList "WINDIR", SOURCE$, "C:\"
AddSectionFilesToCopyList "SYSDIR", SOURCE$, "C:\"
AddSectionFilesToCopyList "FromCDLean", SOURCE$, "C:\"
StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
LeanCost& = VAL(GetListItem(APPNEEDS$, ndrive%))
SetSymbolValue "QuickCost", STR$(LeanCost& / 100000)
AddSectionFilesToCopyList "FromCDPref", SOURCE$, "C:\"
StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
PrefCost& = VAL(GetListItem(APPNEEDS$, ndrive%))
SetSymbolValue "PartialCost", STR$(PrefCost& / 100000)
AddSectionFilesToCopyList "FromCDFull", SOURCE$, "C:\"
StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
FullCost& = VAL(GetListItem(APPNEEDS$, ndrive%))
SetSymbolValue "FullCost", STR$(FullCost& / 100000)
ClearCopyList
rem Get the setup type: Install or uninstall
rem ----------------------------------------
ITYPE:
SetSymbolValue "RadioDefault", SETUPTYPE$
ITYPEL1:
sz$ = UIStartDlg(CUIDLL$, ASKSETUPTYPE, "FRadioDlgProc", 0, "")
SETUPTYPE$ = GetSymbolValue("ButtonChecked")
IF sz$ = "CONTINUE" THEN
UIPop 1
rem Uninstall option selected
rem -------------------------
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOSUB KILLFILES
RemoveIniSection "WIN.INI", "PetCD", cmoNone
i% = MyDeleteGroup (HwndFrame ())
SUCCESS% = UNINSTALLOK
GOTO UNINSTALLED
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ITYPEL1
ELSE
GOSUB ASKQUIT
GOTO ITYPE
END IF
rem Get the destination path; if it's bad, display an error
rem ----------------------------------------------------------------
GETPATH:
SetSymbolValue "EditTextIn", DEST$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
DEST$ = GetSymbolValue("EditTextOut")
IF sz$ = "CONTINUE" THEN
IF IsDirWritable(DEST$) = 0 THEN
GOSUB BADPATH
GOTO GETPATHL1
END IF
UIPop 1
ELSEIF sz$ = "REACTIVATE" THEN
GOTO GETPATHL1
ELSE
GOSUB ASKQUIT
GOTO GETPATH
END IF
rem Perform actual installation
rem ---------------------------
INSTALL:
j% = CheckForOld()
SUCCESS% = Install
IF SUCCESS% = NOSPACE THEN
GOSUB TOOBIG
GOTO GETPATH
END IF
rem De-installation completed
rem -------------------------
UNINSTALLED:
rem When done, issue dialog
rem -----------------------
QUIT:
IF SUCCESS% = INSTALLOK THEN
rem Put pointers to key data in Private Profile file
rem ------------------------------------------------
RemoveIniKey MakePath(DEST$,"BIN\PetCD.INI"), "DIRECTORIES", "HDRoot", cmoNone
CreateIniKeyValue MakePath(DEST$,"BIN\PetCD.INI"), "DIRECTORIES", "HDRoot", DEST$, cmoNone
RemoveIniKey MakePath(DEST$,"BIN\PetCD.INI"), "DIRECTORIES", "CDDrive", cmoNone
CDDRIVE$ = MID$(SOURCE$, 1, 2)
CreateIniKeyValue MakePath(DEST$,"BIN\PetCD.INI"), "DIRECTORIES", "CDDrive", CDDRIVE$, cmoNone
sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
ELSEIF SUCCESS% = UNINSTALLOK THEN
sz$ = UIStartDlg(CUIDLL$, EXITDEINSTOK, "FInfo0DlgProc", 0, "")
ELSE
sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
END IF
UIPop 1
rem Clean up all processing
rem -----------------------
CLEANUP:
i% = StopCustomSetup (HinstFrame(), HwndFrame ())
END
rem ASKQUIT: The user requested quit; does (s)he really want to?
rem ------------------------------------------------------------
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
UIPop 1
IF sz$ = "CONTINUE" THEN
RETURN
END IF
GOTO CLEANUP
rem BADPATH: The user entered an invalid destination directory
rem ----------------------------------------------------------
BADPATH:
sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO BADPATH
END IF
UIPop 1
RETURN
rem TOOBIG: The source files won't fit on the requested destination disk
rem --------------------------------------------------------------------
TOOBIG:
sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO TOOBIG
END IF
UIPop 1
RETURN
rem KILLFILES: Remove PetCD files from the host system
rem ------------------------------------------------------
KILLFILES:
LOCATION$ = GetIniKeyString("WIN.INI", "PetCD", "PetCDDir")
MOVDEST$ = LOCATION$ + "\" + "MOVIES"
SNGDEST$ = LOCATION$ + "\" + "SONGS"
BINDEST$ = LOCATION$ + "\" + "BIN"
PICDEST$ = LOCATION$ + "\" + "PICTURES"
PICDIR_COMMON$ = PICDEST$ + "\" + "COMMON"
PICDIR_COMMON_BUTTONS$ = PICDEST$ + "\" + "COMMON" + "\" + "BUTTONS"
PICDIR_HELPS$ = PICDEST$ + "\" + "HELPS"
PICDIR_HELPS_ARROWS$ = PICDEST$ + "\" + "HELPS" + "\" + "ARROWS"
PICDIR_QUERYSAV$ = PICDEST$ + "\" + "QUERYSAV"
PICDIR_QUERYSAV_BUTTONS$ = PICDEST$ + "\" + "QUERYSAV" + "\" + "BUTTONS"
PICDIR_SCNSAVER$ = PICDEST$ + "\" + "SCNSAVER"
PICDIR_SCREEN0$ = PICDEST$ + "\" + "SCREEN0"
PICDIR_SCREEN0_BUTTONS$ = PICDEST$ + "\" + "SCREEN0" + "\" + "BUTTONS"
PICDIR_SCREEN1$ = PICDEST$ + "\" + "SCREEN1"
PICDIR_SCREEN1_BUTTONS$ = PICDEST$ + "\" + "SCREEN1" + "\" + "BUTTONS"
PICDIR_SCREEN1_LIPS$ = PICDEST$ + "\" + "SCREEN1" + "\" + "LIPS"
PICDIR_SCREEN1_SLIDERS$ = PICDEST$ + "\" + "SCREEN1" + "\" + "SLIDERS"
PICDIR_SCREEN2$ = PICDEST$ + "\" + "SCREEN2"
PICDIR_SCREEN2_BUTTONS$ = PICDEST$ + "\" + "SCREEN2" + "\" + "BUTTONS"
PICDIR_SCREEN2_ARROWS$ = PICDEST$ + "\" + "SCREEN2" + "\" + "ARROWS"
PICDIR_SCREEN2_SLIDERS$ = PICDEST$ + "\" + "SCREEN2" + "\" + "SLIDERS"
PICDIR_SCREEN3$ = PICDEST$ + "\" + "SCREEN3"
PICDIR_SCREEN3_BUTTONS$ = PICDEST$ + "\" + "SCREEN3" + "\" + "BUTTONS"
PICDIR_SCREEN3_ARROWS$ = PICDEST$ + "\" + "SCREEN3" + "\" + "ARROWS"
rem Note: Calling BlastFilesToTarget with 2 kills files
i% = BlastFilesToTarget (MOVDEST$, MOVDEST$, 2)
i% = BlastFilesToTarget (SNGDEST$, SNGDEST$, 2)
i% = BlastFilesToTarget (BINDEST$, BINDEST$, 2)
i% = BlastFilesToTarget (PICDIR_COMMON_BUTTONS$, PICDIR_COMMON_BUTTONS$, 2)
i% = BlastFilesToTarget (PICDIR_HELPS$, PICDIR_HELPS$, 2)
i% = BlastFilesToTarget (PICDIR_HELPS_ARROWS$, PICDIR_HELPS_ARROWS$, 2)
i% = BlastFilesToTarget (PICDIR_QUERYSAV$, PICDIR_QUERYSAV$, 2)
i% = BlastFilesToTarget (PICDIR_QUERYSAV_BUTTONS$, PICDIR_QUERYSAV_BUTTONS$, 2)
i% = BlastFilesToTarget (PICDIR_SCNSAVER$, PICDIR_SCNSAVER$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN0$, PICDIR_SCREEN0$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN0_BUTTONS$, PICDIR_SCREEN0_BUTTONS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN1$, PICDIR_SCREEN1$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN1_BUTTONS$, PICDIR_SCREEN1_BUTTONS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN1_LIPS$, PICDIR_SCREEN1_LIPS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN1_SLIDERS$, PICDIR_SCREEN1_SLIDERS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN2$, PICDIR_SCREEN2$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN2_BUTTONS$, PICDIR_SCREEN2_BUTTONS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN2_ARROWS$, PICDIR_SCREEN2_ARROWS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN2_SLIDERS$, PICDIR_SCREEN2_SLIDERS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN3$, PICDIR_SCREEN3$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN3_BUTTONS$, PICDIR_SCREEN3_BUTTONS$, 2)
i% = BlastFilesToTarget (PICDIR_SCREEN3_ARROWS$, PICDIR_SCREEN3_ARROWS$, 2)
rem Note: RemoveDir doesn't seem to work, so we use our own function
rem RemoveDir LOCATION$ + "\", cmoForce
i% = MyRemoveDir (MOVDEST$)
i% = MyRemoveDir (SNGDEST$)
i% = MyRemoveDir (BINDEST$)
i% = MyRemoveDir (PICDIR_COMMON_BUTTONS$)
i% = MyRemoveDir (PICDIR_COMMON$)
i% = MyRemoveDir (PICDIR_HELPS_ARROWS$)
i% = MyRemoveDir (PICDIR_HELPS$)
i% = MyRemoveDir (PICDIR_QUERYSAV_BUTTONS$)
i% = MyRemoveDir (PICDIR_QUERYSAV$)
i% = MyRemoveDir (PICDIR_SCNSAVER$)
i% = MyRemoveDir (PICDIR_SCREEN0_BUTTONS$)
i% = MyRemoveDir (PICDIR_SCREEN0$)
i% = MyRemoveDir (PICDIR_SCREEN1_BUTTONS$)
i% = MyRemoveDir (PICDIR_SCREEN1_LIPS$)
i% = MyRemoveDir (PICDIR_SCREEN1_SLIDERS$)
i% = MyRemoveDir (PICDIR_SCREEN1$)
i% = MyRemoveDir (PICDIR_SCREEN2_BUTTONS$)
i% = MyRemoveDir (PICDIR_SCREEN2_ARROWS$)
i% = MyRemoveDir (PICDIR_SCREEN2_SLIDERS$)
i% = MyRemoveDir (PICDIR_SCREEN2$)
i% = MyRemoveDir (PICDIR_SCREEN3_BUTTONS$)
i% = MyRemoveDir (PICDIR_SCREEN3_ARROWS$)
i% = MyRemoveDir (PICDIR_SCREEN3$)
i% = MyRemoveDir (PICDEST$)
i% = MyRemoveDir (LOCATION$)
RETURN
rem Install: Perform actual installation
rem ------------------------------------
FUNCTION Install STATIC AS INTEGER
DIM Status as INTEGER
rem Create the destination directory
rem --------------------------------
CreateDir DEST$, cmoNone
rem Build the copy list
rem -------------------
AddSectionFilesToCopyList "PetCD", SOURCE$, DEST$
AddSectionFilesToCopyList "SYSDIR", SOURCE$, MYSYSDIR$
AddSectionFilesToCopyList "WINDIR", SOURCE$, MYWINDIR$
IF SETUPTYPE$ = LEANINST$ THEN
AddSectionFilesToCopyList "FromCDLean", SOURCE$, DEST$
ELSEIF SETUPTYPE$ = PREFINST$ THEN
AddSectionFilesToCopyList "FromCDLean", SOURCE$, DEST$
AddSectionFilesToCopyList "FromCDPref", SOURCE$, DEST$
ELSEIF SETUPTYPE$ = FULLINST$ THEN
AddSectionFilesToCopyList "FromCDLean", SOURCE$, DEST$
AddSectionFilesToCopyList "FromCDPref", SOURCE$, DEST$
AddSectionFilesToCopyList "FromCDFull", SOURCE$, DEST$
END IF
rem Check that we have enough free space to perform the install
rem -----------------------------------------------------------
ListSym$ = APPNEEDS$
StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
drive$ = MID$(DEST$, 1, 1)
ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
free& = GetFreeSpaceForDrive(drive$)
IF cost& >= free& THEN
Install = NOSPACE
EXIT FUNCTION
END IF
rem Copy all the files from the source to the destination
rem -----------------------------------------------------
CopyFilesInCopyList
rem Update WIN.INI and SYSTEM.INI
rem -----------------------------
CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(DEST2$,"player.exe") + " ^.mov", cmoOverwrite
CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(DEST2$,"viewer.exe") + " ^.pic", cmoOverwrite
CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
rem Update Registration Database
rem ----------------------------
rem RUN MakePath(DEST2$, "player.exe") + " install"
rem RUN MakePath(DEST2$, "viewer.exe") + " install"
rem Update old versions of PHI and PETCD1 if ID'd
rem ---------------------------------------------
j% = CheckForOldPETCD1()
j% = CheckForOldPHI()
rem Create a Program Manager group and items
rem ----------------------------------------
i% = GetResourceString (CUIDLL$, STR_GROUP)
GROUP$ = GetSymbolValue ("ResourceString")
CreateProgmanGroup GROUP$, "", cmoNone
i% = GetResourceString (CUIDLL$, STR_PROGRAM)
CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), MakePath(DEST$,"BIN\PETCD.EXE"), "", cmoOverwrite
i% = GetResourceString (CUIDLL$, STR_README)
CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), "write " + MakePath(DEST$,"BIN\README.WRI"), "", cmoOverwrite
rem Put a pointer to Pet CD files in WIN.INI (for uninstall)
rem -----------------------------------------------------------
CreateIniKeyValue "WIN.INI", "PetCD", "PetCDDir", DEST$, cmoNone
rem Indicate install completed OK
rem -----------------------------
Install = INSTALLOK
END FUNCTION
rem MakePath: Builds path from directory and file
rem ---------------------------------------------
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
IF szDir$ = "" THEN
MakePath = szFile$
ELSEIF szFile$ = "" THEN
MakePath = szDir$
ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
MakePath = szDir$ + szFile$
ELSE
MakePath = szDir$ + "\" + szFile$
END IF
END FUNCTION
rem Check for Older versions of the Quicktime For Windows components
rem ---------------------------------------------------------------
FUNCTION CheckForOld STATIC AS INTEGER
sz$ = UIStartDlg(ENUDLL$, OLDMESS, "FModelessDlgProc", 0, "")
CheckForOld1:
cursor% = ShowWaitCursor()
OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
RestoreCursor cursor%
IF (OldFilePath$ <> "") THEN
j% = RemoveOldQTFiles(OldFilePath$)
IF j% = FILES_REMOVED THEN
GOTO CheckForOld1
END IF
END IF
CheckForOld2:
cursor% = ShowWaitCursor()
OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
RestoreCursor cursor%
IF (OldFilePath$ <> "") THEN
j% = RemoveOldQTFiles(OldFilePath$)
IF j% = FILES_REMOVED THEN
GOTO CheckForOld2
END IF
END IF
GetLocalHardDrivesList "HardDrives"
NumDrives% = GetListLength("HardDrives")
IF (NUMDRIVES% > 0) THEN
FOR i% = 1 TO NumDrives% STEP 1
CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
CheckForOld3:
cursor% = ShowWaitCursor()
OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
RestoreCursor cursor%
IF (OldFilePath$ <> "") THEN
j% = RemoveOldQTFiles(OldFilePath$)
IF j% = FILES_REMOVED THEN
GOTO CheckForOld3
END IF
END IF
CheckForOld4:
cursor% = ShowWaitCursor()
OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
RestoreCursor cursor%
IF (OldFilePath$ <> "") THEN
j% = RemoveOldQTFiles(OldFilePath$)
IF j% = FILES_REMOVED THEN
GOTO CheckForOld4
END IF
END IF
NEXT i%
END IF
UIPOP 1
END FUNCTION
FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
RemoveOldQTFiles = FILES_SKIPPED
SPLITPATH FilePath$, drv$, dir$, filename$, ext$
DeadPath$ = drv$ + dir$
rem check version resources if they exist
szVersion$ = GetVersionOfFile(FilePath$)
rem dialog choices are Remove,Skip ("Continue","Back" buttons)
SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
sz$ = UIStartDlg(ENUDLL$, NUKEOLD, "FEditDlgProc", 0, "")
UIPop 1
IF sz$ = "BACK" THEN
EXIT FUNCTION
END IF
IF sz$ <> "CONTINUE" THEN
EXIT FUNCTION
END IF
rem all versions
RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
rem version 1.0.0
RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
rem version 1.1.x and later
RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
rem version 1.9 and later
RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
RemoveOldQTFiles = FILES_REMOVED
END FUNCTION
'$IFDEF DEBUG
IF DoesFileExist(MakePath(DEST$, "bin\qtim.dll"), femExists) = 1 THEN
szError$ = MakePath(DEST$, "BIN")
i% = GetResourceString (ENUDLL$, STR_MSG1)
szError$ = szError$ + GetSymbolValue ("ResourceString")
i% = GetQTWVersion(MakePath(DEST$, "bin\qtim.dll"))
szVersion$ = GetSymbolValue ("VersionString")
szError$ = szError$ + szVersion$
i% = GetResourceString (ENUDLL$, STR_MSG2)
szError$ = szError$ + GetSymbolValue ("ResourceString")
i% = GetResourceString (ENUDLL$, STR_WARNING)
szCaption$ = GetSymbolValue ("ResourceString")
i% = DoMsgBox(szError$, szCaption$, 20)
UIPop 1
IF i% = 7 THEN
GOTO GETPATHL1
END IF
IF szVersion$ = "1.0.0" THEN
i% = GetResourceString (ENUDLL$, STR_MSG3)
szError$ = GetSymbolValue ("ResourceString")
i% = GetResourceString (ENUDLL$, STR_WARNING)
szCaption$ = GetSymbolValue ("ResourceString")
i% = DoMsgBox(szError$, szCaption$, 20)
END IF
'$ENDIF
FUNCTION CheckForSpace (DrivePath$) STATIC AS INTEGER
CheckForSpace = 0
rem Check that we have enough free space to perform the install
rem -----------------------------------------------------------
ListSym$ = APPNEEDS$
StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
drive$ = MID$(DrivePath$, 1, 1)
ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
free& = GetFreeSpaceForDrive(drive$)
IF cost& >= free& THEN
CheckForSpace = NOSPACE
END IF
END FUNCTION
rem Check for Older versions of PETCD EXEs for possible smoking
rem -----------------------------------------------------------
FUNCTION CheckForOldPETCD1 STATIC AS INTEGER
cursor% = ShowWaitCursor()
GetLocalHardDrivesList "HardDrives"
NumDrives% = GetListLength("HardDrives")
IF (NUMDRIVES% > 0) THEN
FOR i% = 1 TO NumDrives% STEP 1
CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
rem Find Old PETCD1.EXE and smoke it
rem --------------------------------
OldFilePath$ = ""
OldFilePath$ = FindFileInTree("PETCD1.EXE",CurrentDrive$)
IF (OldFilePath$ <> "") THEN
RemoveFile OldFilePath$, cmoForce
END IF
NEXT i%
END IF
RestoreCursor cursor%
END FUNCTION
rem Check for Older versions of PHI EXEs for possible replacement
rem -------------------------------------------------------------
FUNCTION CheckForOldPHI STATIC AS INTEGER
cursor% = ShowWaitCursor()
GetLocalHardDrivesList "HardDrives"
NumDrives% = GetListLength("HardDrives")
IF (NUMDRIVES% > 0) THEN
FOR i% = 1 TO NumDrives% STEP 1
CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
rem Find Old PHI1.EXE
rem -----------------
OldFilePath$ = ""
OldFilePath$ = FindFileInTree("PHI1.EXE",CurrentDrive$)
IF (OldFilePath$ <> "") THEN
SPLITPATH OldFilePath$, drv$, dir$, filename$, ext$
NewFilePath$ = drv$ + dir$
AddSectionFilesToCopyList "PHI1", SOURCE$, NewFilePath$
END IF
rem Find Old PHI2.EXE
rem -----------------
OldFilePath$ = ""
OldFilePath$ = FindFileInTree("PHI2.EXE",CurrentDrive$)
IF (OldFilePath$ <> "") THEN
SPLITPATH OldFilePath$, drv$, dir$, filename$, ext$
NewFilePath$ = drv$ + dir$
AddSectionFilesToCopyList "PHI2", SOURCE$, NewFilePath$
END IF
rem Find Old PHI3.EXE
rem -----------------
OldFilePath$ = ""
OldFilePath$ = FindFileInTree("PHI3.EXE",CurrentDrive$)
IF (OldFilePath$ <> "") THEN
SPLITPATH OldFilePath$, drv$, dir$, filename$, ext$
NewFilePath$ = drv$ + dir$
AddSectionFilesToCopyList "PHI3", SOURCE$, NewFilePath$
END IF
NEXT i%
END IF
CopyFilesInCopyList
RestoreCursor cursor%
END FUNCTION